/**
 * 职位管理模块
 * 负责管理公司职位信息，包括职位名称、所属部门、职级和基本薪资等
 */

// 定义状态
const state = {
  // 职位列表，包含初始数据
  list: [
    { id: 1, name: '前端开发工程师', department: '技术部', level: 'P3', baseSalary: 15000, description: '负责公司前端项目开发' },
    { id: 2, name: '人事专员', department: '人事部', level: 'P1', baseSalary: 8000, description: '负责公司人事相关工作' },
    { id: 3, name: '财务经理', department: '财务部', level: 'P3', baseSalary: 25000, description: '负责公司财务工作' },
    { id: 5, name: '市场专员', department: '市场部', level: 'P2', baseSalary: 8500, description: '协助市场推广与活动执行' }
  ]
}

// 定义mutation
const mutations = {
  // 设置职位列表
  SET_LIST(state, list) { state.list = list },
  // 添加新职位
  ADD_POSITION(state, pos) { state.list.push(pos) },
  // 编辑职位信息
  EDIT_POSITION(state, pos) {
    const idx = state.list.findIndex(p => p.id === pos.id)
    if (idx !== -1) state.list.splice(idx, 1, pos)
  },
  // 删除职位
  DELETE_POSITION(state, id) {
    state.list = state.list.filter(p => p.id !== id)
  }
}

// 定义action
const actions = {
  // 获取职位列表
  fetchList({ commit, state }) {
    // 如果已有数据，直接使用
    if (state.list && state.list.length > 0) {
      console.log('position.js: state already populated, skipping initial fetch');
      return;
    }
    commit('SET_LIST', state.list)
  },

  // 添加新职位
  addPosition({ commit, state }, pos) {
    // 生成新职位ID
    pos.id = state.list.length ? Math.max(...state.list.map(p => p.id)) + 1 : 1
    commit('ADD_POSITION', pos)
  },

  // 编辑职位信息
  editPosition({ commit }, pos) {
    commit('EDIT_POSITION', pos)
  },

  // 删除职位
  deletePosition({ commit }, id) {
    commit('DELETE_POSITION', id)
  }
}

// 导出模块
export default {
  namespaced: true, // 启用命名空间
  state,
  mutations,
  actions
} 